home *** CD-ROM | disk | FTP | other *** search
/ Quick PC 61 / Quick PC 61.iso / I386 / NETFX.CAB / InstallPersistSqlState.sql < prev    next >
Encoding:
Text File  |  2003-02-21  |  29.6 KB  |  987 lines

  1. /* First uninstall - this section is exactly the same as uninstall.sql */
  2. USE master
  3. GO
  4.  
  5. /* Drop the database containing our sprocs */
  6. IF DB_ID('ASPState') IS NOT NULL BEGIN
  7.     DROP DATABASE ASPState
  8. END
  9. GO
  10.  
  11. /* Drop the obsolete startup enabler */
  12. DECLARE @PROCID int
  13. SET @PROCID = OBJECT_ID('EnableASPStateStartup') 
  14. IF @PROCID IS NOT NULL AND OBJECTPROPERTY(@PROCID, 'IsProcedure') = 1 BEGIN
  15.     DROP PROCEDURE EnableASPStateStartup
  16. END
  17. GO
  18.  
  19. /* Drop the obsolete startup disabler */
  20. DECLARE @PROCID int
  21. SET @PROCID = OBJECT_ID('DisableASPStateStartup') 
  22. IF @PROCID IS NOT NULL AND OBJECTPROPERTY(@PROCID, 'IsProcedure') = 1 BEGIN
  23.     DROP PROCEDURE DisableASPStateStartup
  24. END
  25. GO
  26.  
  27. /* Drop the ASPState_DeleteExpiredSessions_Job */
  28. DECLARE @JobID BINARY(16)  
  29. SELECT @JobID = job_id     
  30. FROM   msdb.dbo.sysjobs    
  31. WHERE (name = N'ASPState_Job_DeleteExpiredSessions')       
  32. IF (@JobID IS NOT NULL)    
  33. BEGIN  
  34.     -- Check if the job is a multi-server job  
  35.     IF (EXISTS (SELECT  * 
  36.               FROM    msdb.dbo.sysjobservers 
  37.               WHERE   (job_id = @JobID) AND (server_id <> 0))) 
  38.     BEGIN 
  39.         -- There is, so abort the script 
  40.         RAISERROR (N'Unable to import job ''ASPState_Job_DeleteExpiredSessions'' since there is already a multi-server job with this name.', 16, 1) 
  41.     END 
  42.     ELSE 
  43.         -- Delete the [local] job 
  44.         EXECUTE msdb.dbo.sp_delete_job @job_name = N'ASPState_Job_DeleteExpiredSessions' 
  45. END
  46.  
  47. /* Create and populate the ASPState database */
  48. CREATE DATABASE ASPState
  49. GO
  50.  
  51. USE ASPState
  52. GO
  53.  
  54. /* Check to make sure the USE worked.  The CREATE DATABASE may have failed. */
  55. IF DB_NAME()<>'ASPState' BEGIN
  56.     RAISERROR('Error creating state database',20,1)  -- Sev 20 will terminate the connection
  57. END    
  58.  
  59. SET QUOTED_IDENTIFIER OFF 
  60. GO
  61. SET ANSI_NULLS ON 
  62. GO
  63.  
  64. CREATE PROCEDURE DropTempTables
  65. AS
  66.     IF OBJECT_ID('ASPState..ASPStateTempSessions','U') IS NOT NULL BEGIN
  67.         DROP TABLE ASPState..ASPStateTempSessions
  68.     END
  69.  
  70.     IF OBJECT_ID('ASPState..ASPStateTempApplications','U') IS NOT NULL BEGIN
  71.         DROP TABLE ASPState..ASPStateTempApplications
  72.     END
  73.  
  74.     RETURN 0
  75. GO
  76.  
  77. CREATE PROCEDURE GetMajorVersion
  78.     @@ver int output
  79. AS
  80. /* Find out the version */
  81.  
  82. IF OBJECT_ID('tempdb..#AspstateVer') IS NOT NULL BEGIN
  83.     DROP TABLE #AspstateVer
  84. END
  85.  
  86. CREATE TABLE #AspstateVer
  87. (
  88.     c1 INT,
  89.     c2 CHAR(100),
  90.     c3 CHAR(100),
  91.     version CHAR(100)
  92. )
  93.  
  94. INSERT INTO    #AspstateVer
  95. EXEC master..xp_msver ProductVersion
  96.  
  97. DECLARE @version CHAR(100)
  98. DECLARE @dot INT
  99.  
  100. SELECT @version = version FROM #AspstateVer
  101. SELECT @dot = CHARINDEX('.', @version)
  102. SELECT @@ver = CONVERT(INT, SUBSTRING(@version, 1, @dot-1))
  103. GO   
  104.  
  105. /* Find out the version */
  106. DECLARE @ver INT
  107. EXEC GetMajorVersion @@ver=@ver OUTPUT
  108.  
  109. DECLARE @cmd CHAR(8000)
  110.  
  111. IF (@ver >= 8)
  112.     SET @cmd = '
  113.         CREATE PROCEDURE CreateTempTables
  114.         AS
  115.             CREATE TABLE ASPState..ASPStateTempSessions (
  116.                 SessionId           CHAR(32)        NOT NULL PRIMARY KEY,
  117.                 Created             DATETIME        NOT NULL DEFAULT GETUTCDATE(),
  118.                 Expires             DATETIME        NOT NULL,
  119.                 LockDate            DATETIME        NOT NULL,
  120.                 LockDateLocal       DATETIME        NOT NULL,
  121.                 LockCookie          INT             NOT NULL,
  122.                 Timeout             INT             NOT NULL,
  123.                 Locked              BIT             NOT NULL,
  124.                 SessionItemShort    VARBINARY(7000) NULL,
  125.                 SessionItemLong     IMAGE           NULL,
  126.             ) 
  127.  
  128.             CREATE TABLE ASPState..ASPStateTempApplications (
  129.                 AppId               INT             NOT NULL IDENTITY PRIMARY KEY,
  130.                 AppName             CHAR(280)       NOT NULL,
  131.             ) 
  132.  
  133.             CREATE NONCLUSTERED INDEX Index_AppName ON ASPState..ASPStateTempApplications(AppName)
  134.  
  135.             RETURN 0'
  136. ELSE
  137.     SET @cmd = '
  138.         CREATE PROCEDURE CreateTempTables
  139.         AS
  140.             CREATE TABLE ASPState..ASPStateTempSessions (
  141.                 SessionId           CHAR(32)        NOT NULL PRIMARY KEY,
  142.                 Created             DATETIME        NOT NULL DEFAULT GETDATE(),
  143.                 Expires             DATETIME        NOT NULL,
  144.                 LockDate            DATETIME        NOT NULL,
  145.                 LockCookie          INT             NOT NULL,
  146.                 Timeout             INT             NOT NULL,
  147.                 Locked              BIT             NOT NULL,
  148.                 SessionItemShort    VARBINARY(7000) NULL,
  149.                 SessionItemLong     IMAGE           NULL,
  150.             ) 
  151.  
  152.             CREATE TABLE ASPState..ASPStateTempApplications (
  153.                 AppId               INT             NOT NULL IDENTITY PRIMARY KEY,
  154.                 AppName             CHAR(280)       NOT NULL,
  155.             ) 
  156.  
  157.             CREATE NONCLUSTERED INDEX Index_AppName ON ASPState..ASPStateTempApplications(AppName)
  158.  
  159.             RETURN 0'
  160.  
  161. EXEC (@cmd)
  162. GO   
  163.  
  164. CREATE PROCEDURE ResetData
  165. AS
  166.     EXECUTE DropTempTables
  167.     EXECUTE CreateTempTables
  168.     RETURN 0
  169. GO
  170.    
  171. EXECUTE sp_addtype tSessionId, 'CHAR(32)',  'NOT NULL'
  172. GO
  173.  
  174. EXECUTE sp_addtype tAppName, 'VARCHAR(280)', 'NOT NULL'
  175. GO
  176.  
  177. EXECUTE sp_addtype tSessionItemShort, 'VARBINARY(7000)'
  178. GO
  179.  
  180. EXECUTE sp_addtype tSessionItemLong, 'IMAGE'
  181. GO
  182.  
  183. EXECUTE sp_addtype tTextPtr, 'VARBINARY(16)'
  184. GO
  185.  
  186. CREATE PROCEDURE TempGetAppID
  187.     @appName    tAppName,
  188.     @appId      INT OUTPUT
  189. AS
  190.     SELECT @appId = AppId
  191.     FROM ASPState..ASPStateTempApplications
  192.     WHERE AppName = @appName
  193.  
  194.     IF @appId IS NULL BEGIN
  195.         INSERT ASPState..ASPStateTempApplications
  196.             (AppName)
  197.         VALUES
  198.             (@appName)
  199.  
  200.         SELECT @appId = AppId
  201.         FROM ASPState..ASPStateTempApplications
  202.         WHERE AppName = @appName
  203.     END
  204.  
  205.     RETURN 0
  206. GO
  207.  
  208. /* Find out the version */
  209. DECLARE @ver INT
  210. EXEC GetMajorVersion @@ver=@ver OUTPUT
  211. DECLARE @cmd CHAR(8000)
  212. IF (@ver >= 8)
  213.     SET @cmd = '
  214.         CREATE PROCEDURE TempGetStateItem
  215.             @id         tSessionId,
  216.             @itemShort  tSessionItemShort OUTPUT,
  217.             @locked     BIT OUTPUT,
  218.             @lockDate   DATETIME OUTPUT,
  219.             @lockCookie INT OUTPUT
  220.         AS
  221.             DECLARE @textptr AS tTextPtr
  222.             DECLARE @length AS INT
  223.             DECLARE @now as DATETIME
  224.             SET @now = GETUTCDATE()
  225.  
  226.             UPDATE ASPState..ASPStateTempSessions
  227.             SET Expires = DATEADD(n, Timeout, @now), 
  228.                 @locked = Locked,
  229.                 @lockDate = LockDateLocal,
  230.                 @lockCookie = LockCookie,
  231.                 @itemShort = CASE @locked
  232.                     WHEN 0 THEN SessionItemShort
  233.                     ELSE NULL
  234.                     END,
  235.                 @textptr = CASE @locked
  236.                     WHEN 0 THEN TEXTPTR(SessionItemLong)
  237.                     ELSE NULL
  238.                     END,
  239.                 @length = CASE @locked
  240.                     WHEN 0 THEN DATALENGTH(SessionItemLong)
  241.                     ELSE NULL
  242.                     END
  243.             WHERE SessionId = @id
  244.             IF @length IS NOT NULL BEGIN
  245.                 READTEXT ASPState..ASPStateTempSessions.SessionItemLong @textptr 0 @length
  246.             END
  247.  
  248.             RETURN 0'
  249. ELSE
  250.     SET @cmd = '
  251.         CREATE PROCEDURE TempGetStateItem
  252.             @id         tSessionId,
  253.             @itemShort  tSessionItemShort OUTPUT,
  254.             @locked     BIT OUTPUT,
  255.             @lockDate   DATETIME OUTPUT,
  256.             @lockCookie INT OUTPUT
  257.         AS
  258.             DECLARE @textptr AS tTextPtr
  259.             DECLARE @length AS INT
  260.             DECLARE @now as DATETIME
  261.             SET @now = GETDATE()
  262.  
  263.             UPDATE ASPState..ASPStateTempSessions
  264.             SET Expires = DATEADD(n, Timeout, @now), 
  265.                 @locked = Locked,
  266.                 @lockDate = LockDate,
  267.                 @lockCookie = LockCookie,
  268.                 @itemShort = CASE @locked
  269.                     WHEN 0 THEN SessionItemShort
  270.                     ELSE NULL
  271.                     END,
  272.                 @textptr = CASE @locked
  273.                     WHEN 0 THEN TEXTPTR(SessionItemLong)
  274.                     ELSE NULL
  275.                     END,
  276.                 @length = CASE @locked
  277.                     WHEN 0 THEN DATALENGTH(SessionItemLong)
  278.                     ELSE NULL
  279.                     END
  280.             WHERE SessionId = @id
  281.             IF @length IS NOT NULL BEGIN
  282.                 READTEXT ASPState..ASPStateTempSessions.SessionItemLong @textptr 0 @length
  283.             END
  284.  
  285.             RETURN 0'
  286.     
  287. EXEC (@cmd)    
  288. GO
  289.  
  290. DECLARE @ver INT
  291. EXEC GetMajorVersion @@ver=@ver OUTPUT
  292. DECLARE @cmd CHAR(8000)
  293. IF (@ver >= 8)
  294.     SET @cmd = '
  295.         CREATE PROCEDURE TempGetStateItem2
  296.             @id         tSessionId,
  297.             @itemShort  tSessionItemShort OUTPUT,
  298.             @locked     BIT OUTPUT,
  299.             @lockAge    INT OUTPUT,
  300.             @lockCookie INT OUTPUT
  301.         AS
  302.             DECLARE @textptr AS tTextPtr
  303.             DECLARE @length AS INT
  304.             DECLARE @now as DATETIME
  305.             SET @now = GETUTCDATE()
  306.  
  307.             UPDATE ASPState..ASPStateTempSessions
  308.             SET Expires = DATEADD(n, Timeout, @now), 
  309.                 @locked = Locked,
  310.                 @lockAge = DATEDIFF(second, LockDate, @now),
  311.                 @lockCookie = LockCookie,
  312.                 @itemShort = CASE @locked
  313.                     WHEN 0 THEN SessionItemShort
  314.                     ELSE NULL
  315.                     END,
  316.                 @textptr = CASE @locked
  317.                     WHEN 0 THEN TEXTPTR(SessionItemLong)
  318.                     ELSE NULL
  319.                     END,
  320.                 @length = CASE @locked
  321.                     WHEN 0 THEN DATALENGTH(SessionItemLong)
  322.                     ELSE NULL
  323.                     END
  324.             WHERE SessionId = @id
  325.             IF @length IS NOT NULL BEGIN
  326.                 READTEXT ASPState..ASPStateTempSessions.SessionItemLong @textptr 0 @length
  327.             END
  328.  
  329.             RETURN 0'
  330.  
  331. EXEC (@cmd)    
  332. GO
  333.             
  334.  
  335. DECLARE @ver INT
  336. EXEC GetMajorVersion @@ver=@ver OUTPUT
  337. DECLARE @cmd CHAR(8000)
  338. IF (@ver >= 8)
  339.     SET @cmd = '
  340.         CREATE PROCEDURE TempGetStateItemExclusive
  341.             @id         tSessionId,
  342.             @itemShort  tSessionItemShort OUTPUT,
  343.             @locked     BIT OUTPUT,
  344.             @lockDate   DATETIME OUTPUT,
  345.             @lockCookie INT OUTPUT
  346.         AS
  347.             DECLARE @textptr AS tTextPtr
  348.             DECLARE @length AS INT
  349.             DECLARE @now as DATETIME
  350.             DECLARE @nowLocal as DATETIME
  351.  
  352.             SET @now = GETUTCDATE()
  353.             SET @nowLocal = GETDATE()
  354.             
  355.             UPDATE ASPState..ASPStateTempSessions
  356.             SET Expires = DATEADD(n, Timeout, @now), 
  357.                 LockDate = CASE Locked
  358.                     WHEN 0 THEN @now
  359.                     ELSE LockDate
  360.                     END,
  361.                 @lockDate = LockDateLocal = CASE Locked
  362.                     WHEN 0 THEN @nowLocal
  363.                     ELSE LockDateLocal
  364.                     END,
  365.                 @lockCookie = LockCookie = CASE Locked
  366.                     WHEN 0 THEN LockCookie + 1
  367.                     ELSE LockCookie
  368.                     END,
  369.                 @itemShort = CASE Locked
  370.                     WHEN 0 THEN SessionItemShort
  371.                     ELSE NULL
  372.                     END,
  373.                 @textptr = CASE Locked
  374.                     WHEN 0 THEN TEXTPTR(SessionItemLong)
  375.                     ELSE NULL
  376.                     END,
  377.                 @length = CASE Locked
  378.                     WHEN 0 THEN DATALENGTH(SessionItemLong)
  379.                     ELSE NULL
  380.                     END,
  381.                 @locked = Locked,
  382.                 Locked = 1
  383.             WHERE SessionId = @id
  384.             IF @length IS NOT NULL BEGIN
  385.                 READTEXT ASPState..ASPStateTempSessions.SessionItemLong @textptr 0 @length
  386.             END
  387.  
  388.             RETURN 0'
  389. ELSE
  390.     SET @cmd = '
  391.         CREATE PROCEDURE TempGetStateItemExclusive
  392.             @id         tSessionId,
  393.             @itemShort  tSessionItemShort OUTPUT,
  394.             @locked     BIT OUTPUT,
  395.             @lockDate   DATETIME OUTPUT,
  396.             @lockCookie INT OUTPUT
  397.         AS
  398.             DECLARE @textptr AS tTextPtr
  399.             DECLARE @length AS INT
  400.             DECLARE @now as DATETIME
  401.  
  402.             SET @now = GETDATE()
  403.             UPDATE ASPState..ASPStateTempSessions
  404.             SET Expires = DATEADD(n, Timeout, @now), 
  405.                 @lockDate = LockDate = CASE Locked
  406.                     WHEN 0 THEN @now
  407.                     ELSE LockDate
  408.                     END,
  409.                 @lockCookie = LockCookie = CASE Locked
  410.                     WHEN 0 THEN LockCookie + 1
  411.                     ELSE LockCookie
  412.                     END,
  413.                 @itemShort = CASE Locked
  414.                     WHEN 0 THEN SessionItemShort
  415.                     ELSE NULL
  416.                     END,
  417.                 @textptr = CASE Locked
  418.                     WHEN 0 THEN TEXTPTR(SessionItemLong)
  419.                     ELSE NULL
  420.                     END,
  421.                 @length = CASE Locked
  422.                     WHEN 0 THEN DATALENGTH(SessionItemLong)
  423.                     ELSE NULL
  424.                     END,
  425.                 @locked = Locked,
  426.                 Locked = 1
  427.             WHERE SessionId = @id
  428.             IF @length IS NOT NULL BEGIN
  429.                 READTEXT ASPState..ASPStateTempSessions.SessionItemLong @textptr 0 @length
  430.             END
  431.  
  432.             RETURN 0'    
  433.  
  434. EXEC (@cmd)    
  435. GO
  436.  
  437.  
  438. DECLARE @ver INT
  439. EXEC GetMajorVersion @@ver=@ver OUTPUT
  440. DECLARE @cmd CHAR(8000)
  441. IF (@ver >= 8)
  442.     SET @cmd = '
  443.         CREATE PROCEDURE TempGetStateItemExclusive2
  444.             @id         tSessionId,
  445.             @itemShort  tSessionItemShort OUTPUT,
  446.             @locked     BIT OUTPUT,
  447.             @lockAge    INT OUTPUT,
  448.             @lockCookie INT OUTPUT
  449.         AS
  450.             DECLARE @textptr AS tTextPtr
  451.             DECLARE @length AS INT
  452.             DECLARE @now as DATETIME
  453.             DECLARE @nowLocal as DATETIME
  454.  
  455.             SET @now = GETUTCDATE()
  456.             SET @nowLocal = GETDATE()
  457.             
  458.             UPDATE ASPState..ASPStateTempSessions
  459.             SET Expires = DATEADD(n, Timeout, @now), 
  460.                 LockDate = CASE Locked
  461.                     WHEN 0 THEN @now
  462.                     ELSE LockDate
  463.                     END,
  464.                 LockDateLocal = CASE Locked
  465.                     WHEN 0 THEN @nowLocal
  466.                     ELSE LockDateLocal
  467.                     END,
  468.                 @lockAge = CASE Locked
  469.                     WHEN 0 THEN 0
  470.                     ELSE DATEDIFF(second, LockDate, @now)
  471.                     END,
  472.                 @lockCookie = LockCookie = CASE Locked
  473.                     WHEN 0 THEN LockCookie + 1
  474.                     ELSE LockCookie
  475.                     END,
  476.                 @itemShort = CASE Locked
  477.                     WHEN 0 THEN SessionItemShort
  478.                     ELSE NULL
  479.                     END,
  480.                 @textptr = CASE Locked
  481.                     WHEN 0 THEN TEXTPTR(SessionItemLong)
  482.                     ELSE NULL
  483.                     END,
  484.                 @length = CASE Locked
  485.                     WHEN 0 THEN DATALENGTH(SessionItemLong)
  486.                     ELSE NULL
  487.                     END,
  488.                 @locked = Locked,
  489.                 Locked = 1
  490.             WHERE SessionId = @id
  491.             IF @length IS NOT NULL BEGIN
  492.                 READTEXT ASPState..ASPStateTempSessions.SessionItemLong @textptr 0 @length
  493.             END
  494.  
  495.             RETURN 0'
  496.  
  497. EXEC (@cmd)    
  498. GO
  499.  
  500.  
  501. DECLARE @ver INT
  502. EXEC GetMajorVersion @@ver=@ver OUTPUT
  503. DECLARE @cmd CHAR(8000)
  504. IF (@ver >= 8)
  505.     SET @cmd = '
  506.         CREATE PROCEDURE TempReleaseStateItemExclusive
  507.             @id         tSessionId,
  508.             @lockCookie INT
  509.         AS
  510.             UPDATE ASPState..ASPStateTempSessions
  511.             SET Expires = DATEADD(n, Timeout, GETUTCDATE()), 
  512.                 Locked = 0
  513.             WHERE SessionId = @id AND LockCookie = @lockCookie
  514.  
  515.             RETURN 0'
  516. ELSE
  517.     SET @cmd = '
  518.         CREATE PROCEDURE TempReleaseStateItemExclusive
  519.             @id         tSessionId,
  520.             @lockCookie INT
  521.         AS
  522.             UPDATE ASPState..ASPStateTempSessions
  523.             SET Expires = DATEADD(n, Timeout, GETDATE()), 
  524.                 Locked = 0
  525.             WHERE SessionId = @id AND LockCookie = @lockCookie
  526.  
  527.             RETURN 0'
  528.  
  529. EXEC (@cmd)    
  530. GO
  531.  
  532.  
  533. DECLARE @ver INT
  534. EXEC GetMajorVersion @@ver=@ver OUTPUT
  535. DECLARE @cmd CHAR(8000)
  536. IF (@ver >= 8)
  537.     SET @cmd = '
  538.         CREATE PROCEDURE TempInsertStateItemShort
  539.             @id         tSessionId,
  540.             @itemShort  tSessionItemShort,
  541.             @timeout    INT
  542.         AS    
  543.  
  544.             DECLARE @now as DATETIME
  545.             DECLARE @nowLocal as DATETIME
  546.             
  547.             SET @now = GETUTCDATE()
  548.             SET @nowLocal = GETDATE()
  549.  
  550.             INSERT ASPState..ASPStateTempSessions 
  551.                 (SessionId, 
  552.                  SessionItemShort, 
  553.                  Timeout, 
  554.                  Expires, 
  555.                  Locked, 
  556.                  LockDate,
  557.                  LockDateLocal,
  558.                  LockCookie) 
  559.             VALUES 
  560.                 (@id, 
  561.                  @itemShort, 
  562.                  @timeout, 
  563.                  DATEADD(n, @timeout, @now), 
  564.                  0, 
  565.                  @now,
  566.                  @nowLocal,
  567.                  1)
  568.  
  569.             RETURN 0'
  570. ELSE
  571.     SET @cmd = '
  572.         CREATE PROCEDURE TempInsertStateItemShort
  573.             @id         tSessionId,
  574.             @itemShort  tSessionItemShort,
  575.             @timeout    INT
  576.         AS    
  577.  
  578.             DECLARE @now as DATETIME
  579.             SET @now = GETDATE()
  580.  
  581.             INSERT ASPState..ASPStateTempSessions 
  582.                 (SessionId, 
  583.                  SessionItemShort, 
  584.                  Timeout, 
  585.                  Expires, 
  586.                  Locked, 
  587.                  LockDate,
  588.                  LockCookie) 
  589.             VALUES 
  590.                 (@id, 
  591.                  @itemShort, 
  592.                  @timeout, 
  593.                  DATEADD(n, @timeout, @now), 
  594.                  0, 
  595.                  @now,
  596.                  1)
  597.  
  598.             RETURN 0'
  599.  
  600. EXEC (@cmd)    
  601. GO
  602.  
  603.  
  604. DECLARE @ver INT
  605. EXEC GetMajorVersion @@ver=@ver OUTPUT
  606. DECLARE @cmd CHAR(8000)
  607. IF (@ver >= 8)
  608.     SET @cmd = '
  609.         CREATE PROCEDURE TempInsertStateItemLong
  610.             @id         tSessionId,
  611.             @itemLong   tSessionItemLong,
  612.             @timeout    INT
  613.         AS    
  614.             DECLARE @now as DATETIME
  615.             DECLARE @nowLocal as DATETIME
  616.             
  617.             SET @now = GETUTCDATE()
  618.             SET @nowLocal = GETDATE()
  619.  
  620.             INSERT ASPState..ASPStateTempSessions 
  621.                 (SessionId, 
  622.                  SessionItemLong, 
  623.                  Timeout, 
  624.                  Expires, 
  625.                  Locked, 
  626.                  LockDate,
  627.                  LockDateLocal,
  628.                  LockCookie) 
  629.             VALUES 
  630.                 (@id, 
  631.                  @itemLong, 
  632.                  @timeout, 
  633.                  DATEADD(n, @timeout, @now), 
  634.                  0, 
  635.                  @now,
  636.                  @nowLocal,
  637.                  1)
  638.  
  639.             RETURN 0'
  640. ELSE
  641.     SET @cmd = '
  642.         CREATE PROCEDURE TempInsertStateItemLong
  643.             @id         tSessionId,
  644.             @itemLong   tSessionItemLong,
  645.             @timeout    INT
  646.         AS    
  647.             DECLARE @now as DATETIME
  648.             SET @now = GETDATE()
  649.  
  650.             INSERT ASPState..ASPStateTempSessions 
  651.                 (SessionId, 
  652.                  SessionItemLong, 
  653.                  Timeout, 
  654.                  Expires, 
  655.                  Locked, 
  656.                  LockDate,
  657.                  LockCookie) 
  658.             VALUES 
  659.                 (@id, 
  660.                  @itemLong, 
  661.                  @timeout, 
  662.                  DATEADD(n, @timeout, @now), 
  663.                  0, 
  664.                  @now,
  665.                  1)
  666.  
  667.             RETURN 0'
  668.  
  669. EXEC (@cmd)    
  670. GO
  671.  
  672.  
  673. DECLARE @ver INT
  674. EXEC GetMajorVersion @@ver=@ver OUTPUT
  675. DECLARE @cmd CHAR(8000)
  676. IF (@ver >= 8)
  677.     SET @cmd = '
  678.         CREATE PROCEDURE TempUpdateStateItemShort
  679.             @id         tSessionId,
  680.             @itemShort  tSessionItemShort,
  681.             @timeout    INT,
  682.             @lockCookie INT
  683.         AS    
  684.             UPDATE ASPState..ASPStateTempSessions
  685.             SET Expires = DATEADD(n, Timeout, GETUTCDATE()), 
  686.                 SessionItemShort = @itemShort, 
  687.                 Timeout = @timeout,
  688.                 Locked = 0
  689.             WHERE SessionId = @id AND LockCookie = @lockCookie
  690.  
  691.             RETURN 0'
  692. ELSE
  693.     SET @cmd = '
  694.         CREATE PROCEDURE TempUpdateStateItemShort
  695.             @id         tSessionId,
  696.             @itemShort  tSessionItemShort,
  697.             @timeout    INT,
  698.             @lockCookie INT
  699.         AS    
  700.             UPDATE ASPState..ASPStateTempSessions
  701.             SET Expires = DATEADD(n, Timeout, GETDATE()), 
  702.                 SessionItemShort = @itemShort, 
  703.                 Timeout = @timeout,
  704.                 Locked = 0
  705.             WHERE SessionId = @id AND LockCookie = @lockCookie
  706.  
  707.             RETURN 0'
  708.  
  709. EXEC (@cmd)    
  710. GO
  711.  
  712.  
  713. DECLARE @ver INT
  714. EXEC GetMajorVersion @@ver=@ver OUTPUT
  715. DECLARE @cmd CHAR(8000)
  716. IF (@ver >= 8)
  717.     SET @cmd = '
  718.         CREATE PROCEDURE TempUpdateStateItemShortNullLong
  719.             @id         tSessionId,
  720.             @itemShort  tSessionItemShort,
  721.             @timeout    INT,
  722.             @lockCookie INT
  723.         AS    
  724.             UPDATE ASPState..ASPStateTempSessions
  725.             SET Expires = DATEADD(n, Timeout, GETUTCDATE()), 
  726.                 SessionItemShort = @itemShort, 
  727.                 SessionItemLong = NULL, 
  728.                 Timeout = @timeout,
  729.                 Locked = 0
  730.             WHERE SessionId = @id AND LockCookie = @lockCookie
  731.  
  732.             RETURN 0'
  733. ELSE
  734.     SET @cmd = '
  735.         CREATE PROCEDURE TempUpdateStateItemShortNullLong
  736.             @id         tSessionId,
  737.             @itemShort  tSessionItemShort,
  738.             @timeout    INT,
  739.             @lockCookie INT
  740.         AS    
  741.             UPDATE ASPState..ASPStateTempSessions
  742.             SET Expires = DATEADD(n, Timeout, GETDATE()), 
  743.                 SessionItemShort = @itemShort, 
  744.                 SessionItemLong = NULL, 
  745.                 Timeout = @timeout,
  746.                 Locked = 0
  747.             WHERE SessionId = @id AND LockCookie = @lockCookie
  748.  
  749.             RETURN 0'
  750.  
  751. EXEC (@cmd)    
  752. GO
  753.  
  754.  
  755. DECLARE @ver INT
  756. EXEC GetMajorVersion @@ver=@ver OUTPUT
  757. DECLARE @cmd CHAR(8000)
  758. IF (@ver >= 8)
  759.     SET @cmd = '
  760.         CREATE PROCEDURE TempUpdateStateItemLong
  761.             @id         tSessionId,
  762.             @itemLong   tSessionItemLong,
  763.             @timeout    INT,
  764.             @lockCookie INT
  765.         AS    
  766.             UPDATE ASPState..ASPStateTempSessions
  767.             SET Expires = DATEADD(n, Timeout, GETUTCDATE()), 
  768.                 SessionItemLong = @itemLong,
  769.                 Timeout = @timeout,
  770.                 Locked = 0
  771.             WHERE SessionId = @id AND LockCookie = @lockCookie
  772.  
  773.             RETURN 0'
  774. ELSE
  775.     SET @cmd = '
  776.         CREATE PROCEDURE TempUpdateStateItemLong
  777.             @id         tSessionId,
  778.             @itemLong   tSessionItemLong,
  779.             @timeout    INT,
  780.             @lockCookie INT
  781.         AS    
  782.             UPDATE ASPState..ASPStateTempSessions
  783.             SET Expires = DATEADD(n, Timeout, GETDATE()), 
  784.                 SessionItemLong = @itemLong,
  785.                 Timeout = @timeout,
  786.                 Locked = 0
  787.             WHERE SessionId = @id AND LockCookie = @lockCookie
  788.  
  789.             RETURN 0'
  790.  
  791. EXEC (@cmd)            
  792. GO
  793.  
  794.  
  795. DECLARE @ver INT
  796. EXEC GetMajorVersion @@ver=@ver OUTPUT
  797. DECLARE @cmd CHAR(8000)
  798. IF (@ver >= 8)
  799.     SET @cmd = '
  800.         CREATE PROCEDURE TempUpdateStateItemLongNullShort
  801.             @id         tSessionId,
  802.             @itemLong   tSessionItemLong,
  803.             @timeout    INT,
  804.             @lockCookie INT
  805.         AS    
  806.             UPDATE ASPState..ASPStateTempSessions
  807.             SET Expires = DATEADD(n, Timeout, GETUTCDATE()), 
  808.                 SessionItemLong = @itemLong, 
  809.                 SessionItemShort = NULL,
  810.                 Timeout = @timeout,
  811.                 Locked = 0
  812.             WHERE SessionId = @id AND LockCookie = @lockCookie
  813.  
  814.             RETURN 0'
  815. ELSE
  816.     SET @cmd = '
  817.     CREATE PROCEDURE TempUpdateStateItemLongNullShort
  818.         @id         tSessionId,
  819.         @itemLong   tSessionItemLong,
  820.         @timeout    INT,
  821.         @lockCookie INT
  822.     AS    
  823.         UPDATE ASPState..ASPStateTempSessions
  824.         SET Expires = DATEADD(n, Timeout, GETDATE()), 
  825.             SessionItemLong = @itemLong, 
  826.             SessionItemShort = NULL,
  827.             Timeout = @timeout,
  828.             Locked = 0
  829.         WHERE SessionId = @id AND LockCookie = @lockCookie
  830.  
  831.         RETURN 0'
  832.  
  833. EXEC (@cmd)            
  834. GO
  835.  
  836. CREATE PROCEDURE TempRemoveStateItem
  837.     @id     tSessionId,
  838.     @lockCookie INT
  839. AS
  840.     DELETE ASPState..ASPStateTempSessions
  841.     WHERE SessionId = @id AND LockCookie = @lockCookie
  842.     RETURN 0
  843. GO
  844.             
  845. DECLARE @ver INT
  846. EXEC GetMajorVersion @@ver=@ver OUTPUT
  847. DECLARE @cmd CHAR(8000)
  848. IF (@ver >= 8)
  849.     SET @cmd = '
  850.         CREATE PROCEDURE TempResetTimeout
  851.             @id     tSessionId
  852.         AS
  853.             UPDATE ASPState..ASPStateTempSessions
  854.             SET Expires = DATEADD(n, Timeout, GETUTCDATE())
  855.             WHERE SessionId = @id
  856.             RETURN 0'
  857. ELSE
  858.     SET @cmd = '
  859.         CREATE PROCEDURE TempResetTimeout
  860.             @id     tSessionId
  861.         AS
  862.             UPDATE ASPState..ASPStateTempSessions
  863.             SET Expires = DATEADD(n, Timeout, GETDATE())
  864.             WHERE SessionId = @id
  865.             RETURN 0'
  866.  
  867. EXEC (@cmd)            
  868. GO
  869.  
  870.             
  871. DECLARE @ver INT
  872. EXEC GetMajorVersion @@ver=@ver OUTPUT
  873. DECLARE @cmd CHAR(8000)
  874. IF (@ver >= 8)
  875.     SET @cmd = '
  876.         CREATE PROCEDURE DeleteExpiredSessions
  877.         AS
  878.             DECLARE @now DATETIME
  879.             SET @now = GETUTCDATE()
  880.  
  881.             DELETE ASPState..ASPStateTempSessions
  882.             WHERE Expires < @now
  883.  
  884.             RETURN 0'
  885. ELSE
  886.     SET @cmd = '
  887.         CREATE PROCEDURE DeleteExpiredSessions
  888.         AS
  889.             DECLARE @now DATETIME
  890.             SET @now = GETDATE()
  891.  
  892.             DELETE ASPState..ASPStateTempSessions
  893.             WHERE Expires < @now
  894.  
  895.             RETURN 0'
  896.  
  897. EXEC (@cmd)            
  898. GO
  899.             
  900. EXECUTE CreateTempTables
  901. GO
  902.  
  903. /* Create the startup procedure */
  904. USE master
  905. GO
  906.  
  907. /* Create the job to delete expired sessions */
  908. BEGIN TRANSACTION            
  909.     DECLARE @JobID BINARY(16)  
  910.     DECLARE @ReturnCode INT    
  911.     SELECT @ReturnCode = 0     
  912.  
  913.     -- Add job category
  914.     IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name = N'[Uncategorized (Local)]') < 1 
  915.         EXECUTE msdb.dbo.sp_add_category @name = N'[Uncategorized (Local)]'
  916.  
  917.     -- Add the job
  918.     EXECUTE @ReturnCode = msdb.dbo.sp_add_job 
  919.             @job_id = @JobID OUTPUT, 
  920.             @job_name = N'ASPState_Job_DeleteExpiredSessions', 
  921.             @owner_login_name = NULL, 
  922.             @description = N'Deletes expired sessions from the session state database.', 
  923.             @category_name = N'[Uncategorized (Local)]', 
  924.             @enabled = 1, 
  925.             @notify_level_email = 0, 
  926.             @notify_level_page = 0, 
  927.             @notify_level_netsend = 0, 
  928.             @notify_level_eventlog = 0, 
  929.             @delete_level= 0
  930.  
  931.     IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  932.     
  933.     -- Add the job steps
  934.     EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep 
  935.             @job_id = @JobID,
  936.             @step_id = 1, 
  937.             @step_name = N'ASPState_JobStep_DeleteExpiredSessions', 
  938.             @command = N'EXECUTE DeleteExpiredSessions', 
  939.             @database_name = N'ASPState', 
  940.             @server = N'', 
  941.             @database_user_name = N'', 
  942.             @subsystem = N'TSQL', 
  943.             @cmdexec_success_code = 0, 
  944.             @flags = 0, 
  945.             @retry_attempts = 0, 
  946.             @retry_interval = 1, 
  947.             @output_file_name = N'', 
  948.             @on_success_step_id = 0, 
  949.             @on_success_action = 1, 
  950.             @on_fail_step_id = 0, 
  951.             @on_fail_action = 2
  952.  
  953.     IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  954.  
  955.     EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, @start_step_id = 1 
  956.     IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  957.     
  958.     -- Add the job schedules
  959.     EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule 
  960.             @job_id = @JobID, 
  961.             @name = N'ASPState_JobSchedule_DeleteExpiredSessions', 
  962.             @enabled = 1, 
  963.             @freq_type = 4,     
  964.             @active_start_date = 20001016, 
  965.             @active_start_time = 0, 
  966.             @freq_interval = 1, 
  967.             @freq_subday_type = 4, 
  968.             @freq_subday_interval = 1, 
  969.             @freq_relative_interval = 0, 
  970.             @freq_recurrence_factor = 0, 
  971.             @active_end_date = 99991231, 
  972.             @active_end_time = 235959
  973.  
  974.     IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  975.     
  976.     -- Add the Target Servers
  977.     EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, @server_name = N'(local)' 
  978.     IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  979.     
  980.     COMMIT TRANSACTION          
  981.     GOTO   EndSave              
  982. QuitWithRollback:
  983.     IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION 
  984. EndSave: 
  985. GO
  986.  
  987.